fix "using" field not working in array form for construction recipes #34533
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
SUMMARY: Bugfixes "Fix construction recipes with missing requirements"
Purpose of change
Fixes #34191 - "using" field doesn't work in array form for construction recipes
Describe the solution
Added a
std::vector<std::pair<requirement_id, int>>
toconstruction
to store the requirements specified with"using"
. Sinceconstruction.json
loads before these"using"
requirements, the added vector is only added intoconstruction.requirements
duringfinalize_constructions
Describe alternatives you've considered
I didn't like the fact that I kind of copypasta'd this logic - the next time requirement syntax changes, one of the two will be easily missed and silently fail just like this issue. Maybe consider a more generic solution instead, since they both do the same thing.
Additional Context
Before:
After: